Açık işlev kodumda kendi işlevlerimi tanımlamak mümkün mü? Evet, basit bir örneği nerede görebilirim? Eğer gibi fonksiyonlar yazabilir here kod örnekleri dayanarakOpenCL kullanıcı tanımlı satır içi işlevleri
cevap
:
inline int add(int a,int b)
{
return a+b;
}
(Örn DXTC veya bitonic sıralama örneklerde .cl dosyasına bakarak..)
Bilmiyorum Bu bir nvidia sadece uzatma olup olmadığını biliyorum ama OpenCL belgeleri "yardımcı fonksiyonlar" yanı sıra çekirdekler hakkında konuşuyor.
Garip, OpenCL spec __device hakkında bir şey söylemiyor – dmessf
Evet. Merak ettim merak ediyorum. Veya Apple bir uzantı olarak eklediyse. Bu yüzden beni değiştirdiyseniz, test edilene kadar tekrar tekrar modifiye ediyorum :-) – sigfpe
Veya CUDA koduyla karıştırıyorsam. Ben her ikisiyle de oynuyordum. – sigfpe
OpenCL, yardımcı işlevleri destekler. Örnekler için sayfa 19/this link'a bakın. Sen parametresi şöyle dizeleri içinde işlevlerini yerleştirebilirsiniz
cl_program clCreateProgramWithSource (
cl_context context,
cl_uint count,
const char **strings,
const size_t *lengths,
cl_int *errcode_ret)
programdır oluşturmak için kullanılan
Link! = Işlevsel :( –
@Garet: Teşekkürler – Yktula
Oooh, .. orada iyi bir temel kart üzerinde çok yararlı bilgiler var .. güzel .. –
Fonksiyon ...
float AddVector(float a, float b)
{
return a + b;
}
kernel void VectorAdd(
global read_only float* a,
global read_only float* b,
global write_only float* c)
{
int index = get_global_id(0);
//c[index] = a[index] + b[index];
c[index] = AddVector(a[index], b[index]);
}
Şimdi bir kullanıcı tanımladığınız işlev "AddVector" ve bir çekirdek fonksiyonu "VectorAdd"
Biraz araştırdım ve şu soruya geri dönüp durdum: -P
Sonuçta yaptığım makroların kullanımıydı, çünkü satır içi uygulamalara bağlı olsa da, makrolar c99 OpenCL programları bağlamında büyük bir dezavantaja sahip değiller mi? örneğin:
#define getFilterBoardOffset(filter, inputPlane) \
((filter * gInputPlanes + inputPlane) * gFilterSizeSquared)
#define getResultBoardOffset(n, filter) \
((n * gNumFilters + filter) * gOutputBoardSizeSquared)
yerine:
inline float getFilterBoardOffset(float filter, int inputPlane) {
return (filter * gInputPlanes + inputPlane) * gFilterSizeSquared;
}
inline float getResultBoardOffset(float n, int filter) {
return (n * gNumFilters + filter) * gOutputBoardSizeSquared;
}
- 1. En kullanışlı Kullanıcı Tanımlı Agrega İşlevleri
- 2. Derleyiciler satır içi işlevleri ne kadar derin?
- 3. Satır içi satır içi satır
- 4. opencl için iç içe çekirdek işlevleri
- 5. Python'u satır içi kabuktan satır içi yürütme
- 6. Inlineiting Sabit satır içi satır içi paketleri
- 7. Google Closure derleyici * bazı işlevleri * satır içi yapmak mümkün mü?
- 8. satır içi işlev gcc
- 9. Kullanıcı tanımlı bir tür
- 10. Kullanıcı tanımlı dönüşümler oluşturma
- 11. kullanıcı tanımlı fonksiyonlar
- 12. satır içi işlev bağlayıcı hatası
- 13. OpenCL
- 14. Bir satır içi satır içi javascript yükleme sorunu
- 15. Satır içi JSON'u ayrıştırma
- 16. Sinatra satır içi şablonları
- 17. Ekran: satır içi çalışmıyor
- 18. Yöntem, satır içi yöntem
- 19. __forceinline satır içi nasıl?
- 20. ASP.net satır içi kod
- 21. Kalıtım ve satır içi?
- 22. Bash "satır içi" şart
- 23. Satır İçi İşlevler
- 24. JavaScript'te global kullanıcı tanımlı işlevlerin listesi?
- 25. Ben kullanıcı içeriği temizlemeye htmlpurifier kullanıyorum satır içi css
- 26. vb yerleşik işlevleri IsEqual, isnotequal, isgreater, amacı ne? OpenCL yılında
- 27. profil oluşturma sadece kullanıcı tanımlı işlevler
- 28. jQuery - Satır içi satır satırı düzenleme
- 29. Python Kullanıcı Tanımlı Veri Türü
- 30. Lispit'te SQLITE kullanıcı tanımlı işlevler
Eski soruya ... Bir yanıttan ihtiyacınız başka bir şey? –
Başlık gibi görünüyor ve soru farklı mı? Başlık, özellikle 'inline' için sorar, soru sadece bizim fonksiyonlarımızı tanımlayabilir miyiz soruyor ... –