Idea about the missing API af_get_raw_ptr
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
El issue no menciona archivos del repositorio ni pruebas. Empieza revisando las declaraciones de interoperabilidad de C# mostradas y el contrato de la API de ArrayFire af_get_raw_ptr; después, determina los requisitos de ownership y lifetime compatibles. Se considerará terminado cuando exista un diseño acordado orientado a .NET para el acceso mediante puntero sin procesar o zero-copy, con la validación de que la memoria expuesta siga siendo válida sin duplicación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hello Arrayfire team!,
I was curious about the implemented APIs for dotnet so far and noticed that there is one is missing (or commented out) : "af_get_raw_ptr".
When using arrayfire you just always get the "unmanaged" C++ af array object as an IntrPtr without any possibility to use this object in other .NET APIs (except arrayfire). In my opinion it would be awesome if .NET would have the underlying array as dotnet object but without duplicating it in memory (this means the raw pointer as .NET array or Span or sth in this way).
If arrayfire-dotnet could do this - you could interact with many other librarties but do not duplicate the memory (as long as on CPU backend I guess).
For this the API af_get_raw_ptr is important. I did some ... try outs and played around with it. I was able to create an arrayfire array, got the raw pointer and created a span object from it. Just want to share with you and ask what you think about. unfortunately until now I did not test if there is really not a duplicate in memory and it was for a very small array so far... plus a lot of unsafe sections
public static class af
{
[DllImport("afcpu.dll", ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int af_create_array(out IntPtr array_arr, [In] float[] data, uint ndims, [In] long[] dim_dims, int type);
[DllImport("afcpu.dll")]
public unsafe static extern int af_get_raw_ptr(void** ptr, IntPtr arr);
}
class Program
{
static unsafe void Main(string[] args)
{
float[] dotnetArray = {101,2,3,4,5};
float puffer_1 = 5;
IntPtr af_Ptr = new IntPtr();
void* puffer_2=(void*) &puffer_1;
void** raw_ptr = & puffer_2;
int error = af.af_create_array(out af_Ptr, dotnetArray, 1,new long[] {5},0 );
error = af.af_get_raw_ptr(raw_ptr,af_Ptr);
puffer_2 = *raw_ptr;
var dotnetSpan = new Span<float>((float*)puffer_2, 5);
}
}
- Lenguaje dominante
- C#
- Estrellas
- 76
- Forks
- 19
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de arrayfire/arrayfire-dotnet
-
How convert array to af_seq? Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
-
Error in ar_topk Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
af_index_t Abiertoquestion
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
arrayfire/arrayfire-dotnet#31 · 3 comentarios ·
-
GetData gives incorrect results Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
arrayfire/arrayfire-dotnet#29 · 3 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
arrayfire/arrayfire-dotnet#27 · 1 comentario ·
Todos los issues de arrayfire/arrayfire-dotnet
Issues similares
-
Add more to the documentation Abierto:watch: Not Triaged dotnet-fsharp/svc
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Client customer-reported needs-team-attention question Service Attention WebPubSub
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Azure/azure-sdk-for-net#63292 · 3 comentarios · 1 reacción ·
-
Issue-Enhancement Needs-Triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
PowerShell/PowerShell#28061 · 2 reacciones ·
-
dependencies needs-team-triage server-Azure.Mcp
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
aspnet-core/svc aspnetcore-signalr/subsvc doc-enhancement Pri2 SignalR
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
dotnet/AspNetCore.Docs#37729 ·