2015-06-10 9 views
10

मेरे सिस्टम में ग्राफिक्स कार्ड है। मेरे द्वारा गेम नहीं खेली जाती हैं।क्या मैं जूलिया का उपयोग अपने जीपीयू और सीपीयू प्रोग्राम करने के लिए कर सकता हूं?

मैं मज़े के लिए कुछ उच्च प्रदर्शन कंप्यूटिंग सामान प्रोग्राम करना चाहता हूं।

क्या मैं अपने हार्डवेयर का लाभ उठाने के लिए जुलिआ लैंग का उपयोग कर सकता हूं?

उत्तर

11

हाँ!

OpenCL.jl

* कैसे स्थापित करने के लिए दर्ज करें?

Pkg.add("OpenCL"); 
Pkg.update() 
  • उपयोग अपने हार्डवेयर

https://github.com/JuliaGPU/OpenCL.jl/blob/master/examples/performance.jl

+0

मैं OpenCL और CUDAnative पैकेज के बीच कुछ प्रदर्शन की तुलना को देखने के लिए जब यह विकास पूरा हो गया है है दिलचस्पी होगी । बेशक, ओपनसीएल के साथ आप विक्रेता लॉक से बचें। –

4

CUDA पर विभिन्न OpenCL गणना प्लेटफार्मों की जाँच करने के लिए नीचे दिए गए लिंक NVIDIA स्वामित्व है, लेकिन व्यापक रूप से वैज्ञानिक कंप्यूटिंग में प्रयोग किया जाता है। जूलिया में कई सीयूडीए संबंधित पैकेज हैं, लेकिन मैं CUDArt का उपयोग कर रहा हूं जो मेरे लिए काफी अच्छा काम कर रहा है।

https://github.com/JuliaGPU/CUDArt.jl

आमतौर पर आप मैन्युअल रूप से मुक्त स्मृति आप GPU पर आवंटित करने के लिए है, लेकिन इस पैकेज CudaArray वर्गों है कि जूलिया जीसी के साथ पंजीकृत हैं, तो आप मेमोरी लीक के बारे में चिंता करने की ज़रूरत नहीं है। जब आपकी मेमोरी जरूरतों की अधिक मांग होती है तो आप निश्चित रूप से स्मृति को मैन्युअल रूप से प्रबंधित कर सकते हैं।

जब आप अपने खुद के दाने लेखन शुरू, यह भी एक तस्वीर जूलिया से उन्हें फोन करने के लिए सीधे अगर तुम उन्हें PTX को संकलित है (साझा वस्तुओं के लिए नहीं/dll के)। यदि आप इस तरह से संपर्क करते हैं तो आप वास्तव में मौजूदा जूलिया सत्र में उन्हें फिर से लोड कर सकते हैं।

+1

अच्छा। लेकिन मेरे पास एनवीआईडीआईए ग्राफिक्स कार्ड नहीं है। मैं राडेन का उपयोग करता हूँ। और ओपनसीएल वेंडर अज्ञेयवादी मुझे लगता है। – suryakrupa

4

मैं सफलतापूर्वक the Julia wrapper का उपयोग कर ArrayFire लाइब्रेरी का उपयोग कर रहा हूँ। यह सीयूडीए और ओपनसीएल (और सीपीयू) दोनों का समर्थन करता है।

यह समझना बहुत आसान है और उपयोग:

#Random number generation 
a = rand(AFArray{Float64}, 100, 100) 
#Basic arithmetic operations 
c = sin(a) + 0.5 
d = a * 5 

यहाँ एक बेंचमार्क रन है:

julia> benchmark() 
INFO: Warmup done! 
INFO: Matmul 
Time (CPU): 0.042887455 
Time (GPU): 0.0417952754 
INFO: FFT 
Time (CPU): 0.074640831 
Time (GPU): 0.009890463 
INFO: Rand 
Time (CPU): 0.089245094 
Time (GPU): 0.0097255858 
INFO: Vec sort 
Time (CPU): 0.11730852 
Time (GPU): 0.0384733068 
+0

अभी भी ArrayFire.jl विकसित किया जा रहा है? यह वर्तमान में जूलिया 0.4 और 0.5 में विफल रहा है। –

संबंधित मुद्दे

 संबंधित मुद्दे