2015-03-19 26 views
8

Ho appena provato a familiarizzare con OpenCL ma sono completamente confuso quando tutti in Internet stavano parlando di scaricare un SDK OpenCL specifico del fornitore. Perché dovrei averne bisogno?Ho davvero bisogno di un SDK OpenCL?

La mia comprensione di usare OpenCL è stato il seguente:

  1. Scaricare i file di intestazione OpenCL che vengono gestiti da Kronos nel Khronos OpenCL Registry e renderlo disponibile per il vostro compilatore.
  2. Compilare il codice e il collegamento con OpenCL.dll.

Il motivo per cui mi confonde è perché pensavo che OpenCL dovesse estrapolare le implementazioni specifiche del fornitore. Se ora scarica un SDK specifico del venditore, questo vantaggio non viene distrutto?

Qualcuno può chiarirlo?

risposta

14

La vostra comprensione è assolutamente corretta - non è necessario alcun SDK del fornitore per sviluppare o eseguire programmi OpenCL. Tutto ciò di cui hai bisogno sono le intestazioni e una biblioteca da collegare. Gli SDK del fornitore forniscono un codice di esempio che può essere utile osservare mentre si impara a utilizzare OpenCL e possono anche fornire strumenti che possono aiutare lo sviluppo.

Su Windows, è necessario disporre di una libreria OpenCL.lib per il collegamento, fornita dagli SDK. Puoi download the sources per questa libreria e costruiscila tu stesso, se lo desideri.

Non vi è alcun danno dall'utilizzo dell'SDK di un fornitore specifico. Le intestazioni e la libreria che forniscono nell'SDK dovrebbero essere solo le versioni di Khronos disponibili che è possibile scaricare autonomamente. Ciò significa che un'applicazione OpenCL creata utilizzando l'SDK di un fornitore continuerà comunque a funzionare correttamente con i dispositivi di altri fornitori.

+0

Risposta perfetta, grazie! Non sono riuscito a trovare queste informazioni da solo su Internet. Inoltre ti ringrazio molto per aver spiegato i dettagli con OpenCL.lib perché questa sarebbe stata la mia prossima domanda. – denim

+0

Il passaggio successivo è l'utilizzo del caricamento dinamico, in tal caso non è nemmeno necessario il "OpenCL.lib", solo le intestazioni e il codice per risolvere il puntatore alle funzioni, alcune persone hanno già strumenti codificati per questo: https://github.com/martijnberger/clew – DarkZeros

+0

Grazie, ero consapevole del caricamento dinamico ma ero curioso di sapere perché nessuno lo menzionasse davvero su Internet. Tutti continuavano a parlare dell'utilizzo di un SDK specifico del venditore. Ora so che gli SDK non danneggiano e che sono opzionali. – denim

Problemi correlati